//
//  ATDrawTrackManager.h
//  ATGaode_demo
//
//  Created by Chengquan Ye on 2019/3/8.
//  Copyright © 2019年 Chengquan Ye. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <AMapTrackKit/AMapTrackKit.h>

NS_ASSUME_NONNULL_BEGIN

@protocol ATDrawTrackManagerDelegate <NSObject>

@optional
/** 开启服务是否成功 */
- (void)startServiceIsSuccess:(BOOL)isSuccess;
/** 结束服务是否成功 */
- (void)stopServiceIsSuccess:(BOOL)isSuccess;
/** 开始采集是否成功 */
- (void)startGatherAndPackIsSuccess:(BOOL)isSuccess;
/** 结束服务是否成功 */
- (void)stopGatherAndPackIsSuccess:(BOOL)isSuccess;
/**
 * @brief 查询终端位置回调函数
 * @param request 发起的请求，具体字段参考 AMapTrackQueryLastPointRequest 类。
 * @param response 响应结果，具体字段参考 AMapTrackQueryLastPointResponse 类。
 */
- (void)queryLastPointDone:(AMapTrackQueryLastPointRequest *)request response:(AMapTrackQueryLastPointResponse *)response;

/**
 * @brief 查询轨迹历史数据回调函数
 * @param request 发起的请求，具体字段参考 AMapTrackQueryTrackInfoRequest 类。
 * @param response 响应结果，具体字段参考 AMapTrackQueryTrackInfoResponse 类。
 */
- (void)queryTrackInfoDone:(AMapTrackQueryTrackInfoRequest *)request response:(AMapTrackQueryTrackInfoResponse *)response;

/**
 * @brief 查询轨迹历史数据和行驶距离回调函数
 * @param request 发起的请求，具体字段参考 AMapTrackQueryTrackHistoryAndDistanceRequest 类。
 * @param response 响应结果，具体字段参考 AMapTrackQueryTrackHistoryAndDistanceResponse 类。
 */
- (void)queryTrackHistoryAndDistanceDone:(AMapTrackQueryTrackHistoryAndDistanceRequest *)request response:(AMapTrackQueryTrackHistoryAndDistanceResponse *)response;

/**
 * @brief 查询轨迹行驶距离回调函数
 * @param request 发起的请求，具体字段参考 AMapTrackQueryTrackDistanceRequest 类。
 * @param response 响应结果，具体字段参考 AMapTrackQueryTrackDistanceResponse 类。
 */
- (void)queryTrackDistanceDone:(AMapTrackQueryTrackDistanceRequest *)request response:(AMapTrackQueryTrackDistanceResponse *)response;

/**
 * @brief 增加Track回调函数
 * @param request 发起的请求，具体字段参考 AMapTrackAddTrackRequest 类。
 * @param response 响应结果，具体字段参考 AMapTrackAddTrackResponse 类。
 */
- (void)addTrackDone:(AMapTrackAddTrackRequest *)request response:(AMapTrackAddTrackResponse *)response;

@end

@interface ATDrawTrackManager : NSObject

+ (instancetype)manager;

/** 代理 */
@property (nonatomic, weak) id<ATDrawTrackManagerDelegate> delegate;

/** 是否散点上传, 默认NO */
@property (nonatomic, assign) BOOL isUploadAllPoint;


///指定的serviceID
@property (nonatomic, copy, readonly) NSString *serviceID;

///要查询的Terminal的ID
@property (nonatomic, copy, readonly) NSString *terminalID;

///新增的Track的ID
@property (nonatomic, strong, readonly) NSString *trackID;
///要查询的Terminal的name，如果填写了terminalID则以terminalID为准
@property (nonatomic, copy, readonly) NSString *terminalName;

///定位信息的采集周期，单位秒，默认2s，有效值范围[1, 60]。
@property (nonatomic, assign) NSUInteger gatherInterval;

///定位信息的上传周期，单位秒，默认20s，有效值范围[5, 3000]。
@property (nonatomic, assign) NSUInteger packInterval;
/** 缓存的大小 */
@property (nonatomic, assign) NSInteger cacheMaxSize;

///第几页数据，默认1
@property (nonatomic, assign) NSUInteger pageIndex;

///每页数据量，默认20，有效值范围[1, 1000)
@property (nonatomic, assign, readonly) NSUInteger pageSize;

/** 创建管理器 serviceID: 服务id */
- (void)setupTrackManager:(NSString *)serviceID;
/** 开启服务
 * terminalName: 终端名
 */
- (void)startServiceWithTerminalName:(NSString *)terminalName;
/** 结束服务 */
- (void)stopService;
/** 开始采集和上传 */
- (void)startGather;
/** 结束采集 */
- (void)stopGather;

/** 查询最后一个轨迹点 */
- (void)queryLastestPoint;

/**
 * @brief 查询轨迹行驶距离接口
 * @param request 查询选项。具体属性字段请参考 AMapTrackQueryTrackDistanceRequest 类。
 */
- (void)queryTrackDistance:(AMapTrackQueryTrackDistanceRequest *)request;

/**
 * @brief 查询轨迹历史数据和行驶距离接口
 * @param request 查询选项。具体属性字段请参考 AMapTrackQueryTrackHistoryAndDistanceRequest 类。
 */
- (void)queryTrackHistoryAndDistance:(AMapTrackQueryTrackHistoryAndDistanceRequest *)request;

/**
 * @brief 查询轨迹历史数据
 * @param request 查询选项。具体属性字段请参考 AMapTrackQueryTrackInfoRequest 类。
 */
- (void)queryTrackInfo:(AMapTrackQueryTrackInfoRequest *)request;

/** 界面销毁处理 */
- (void)deallocDoSomething;

@end

NS_ASSUME_NONNULL_END
